In an adaptive streaming media system, a computing device can process requests for one or more data assets such as a sequence of content fragments. The computing device can reference a fragment index to determine the span of data that constitutes the requested fragment. A user device (e.g., digital media player) can receive and assemble the requested fragments and can render the fragments to a user.
An example implementation of the computing device (e.g., fragment server) uses a spinning disk storage device to store the digital media and its associated fragment indexes. The fragment server can receive a fragment request, seek an index file, read the index file, seek the media file, read the requested fragment from the media file, and respond to the requestor (e.g., client) with the requested fragment data. As such, the naive implementation requires a minimum of two seeks per fragment.
As the number of requests to the computing device increases, the time it takes to seek on the disk becomes a performance bottleneck. One problem is that fragment servers can receive millions of fragment requests per second and the spinning disks cannot keep up. Replacing spinning disk storage with solid-state devices (SSD) may alleviate the seek time problem. But for the same storage, solid-state disks cost about ten times the cost of a spinning disk. Thus the cost of this solution is prohibitive. This disclosure addresses such and other shortcomings related to control of content delivery.